package com.ruoyi.common.sms.result;

import java.util.List;
import java.util.Map;

public class ResultFactory {

    private static final ResultJson SUCCESS_RESULT = new ResultJson(Status.SUCCESS, Status.SUCCESS_MSG);

    private ResultFactory() {
    }

    /**
     * 生成返回成功结果
     */
    public static ResultJson successResult() {
        return SUCCESS_RESULT;
    }

    /**
     * 生成返回成功结果T data
     */
    public static ResultJson successData(Object data){
        return new ResultJson(Status.SUCCESS, Status.SUCCESS_MSG,data);
    }

    /**
     * 生成返回成功结果List<T> listData
     * @param listData
     * @return
     */
    public static ResultJson successData(List<T> listData){
        return new ResultJson(Status.SUCCESS, Status.SUCCESS_MSG,listData);
    }

    /**
     * 生成返回结果
     *
     * @param code
     *            错误码
     * @param msg
     *            消息文本
     * @return 结果对象
     */
    public static ResultJson result(int code, String msg) {
        return new ResultJson(code, msg);
    }

    /**
     * 生成返回结果
     *
     * @param code
     *            错误码
     * @param msg
     *            消息文本
     * @param listData
     *            数据对象
     * @return 结果对象
     */
    public static ResultJson result(int code, String msg, List<T> listData) {
        return new ResultJson(code, msg, listData);
    }

    /**
     * 生成返回结果
     *
     * @param code
     *            错误码
     * @param msg
     *            消息文本
     * @param data
     *            数据对象
     * @return 结果对象
     */
    public static <T> ResultJson result(int code, String msg, T data) {
        return new ResultJson(code, msg, data);
    }

    /**
     * 生成返回结果
     *
     * @param code
     *            错误码
     * @param msg
     *            消息文本
     * @param mapData
     *            数据对象
     * @return 结果对象
     */
    public static <K, V> ResultJson result(int code, String msg, Map<K, V> mapData) {
        return new ResultJson(code, msg, mapData);
    }

}
